home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 000029_timbl _Thu Jan 9 12:34:24 1992.msg < prev    next >
Internet Message Format  |  1994-01-24  |  42KB

  1. Return-Path: <timbl>
  2. Received: by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  3.     id AA08666; Thu, 9 Jan 92 12:34:24 GMT+0100
  4. Date: Thu, 9 Jan 92 12:34:24 GMT+0100
  5. From: timbl (Tim Berners-Lee)
  6. Message-Id: <9201091134.AA08666@ nxoc01.cern.ch >
  7. Received: by NeXT Mailer (1.62)
  8. To: Mark Alexander Davis-Craig <mad@merit.edu>
  9. Subject: Re: Is there a paper which describes the www protocol?
  10. Cc: www-talk
  11.  
  12.  
  13.  
  14. > From: Mark Alexander Davis-Craig <mad@merit.edu>
  15.  
  16. > I was looking through the web and found information on servers and
  17. > clients.  I saw mention in the "History" section about wanting to
  18. > develop a good protocol for information exchange, but haven't seen a
  19. > paper specifically about the www protocol.  Is there one?  If not,
  20. > could you describe it in some detail?
  21.  
  22. You are right that the protocol documentation was not as good as it could
  23. have been. I have improved it. To save you browing through the web for it,
  24. I append to this message the information as plain text.
  25.  
  26. > I ask because we at the University of Michigan are evaluating www,
  27. > wais, and gopher for campus-wide information delivery.
  28. >
  29.  
  30. I have no need to tell you what our suggestion would be!  The W3 architecure
  31. will give you (almost) everything you can get from WAIS and Gopher rolled into one.
  32. The trick is that almost anything is representable by hypertext links and index searches. The  
  33. Gopher menus and plain text, for example, are both special cases of hypertext.  As it is more  
  34. work to do the job for hypertext in general, we do not yet have software to cover as many  
  35. platforms as Gopher, for example. However, when we do, the W3 system will be more flexible.   
  36. Running a W3 server on top of a WAIS or Gopher world in fact makes these worlds subsets of the W3  
  37. web. The reverse is not possible because the WAIS and Gopher information models are not flexible  
  38. enough
  39. to encompass the W3 model.
  40.  
  41. That said, if you want an indexer we can only recommend the wais code (or NeXT code) and we do  
  42. not yet supply (as Gopher does) an off-the shelf index server for either of those indexes yet. It  
  43. is easy to do, however, with our generic server code.
  44.  
  45. Please keep me informed of your thinking, whether you plan to go W3 or Gopher.  If we can help  
  46. you set up a demonstration system, then mail me.
  47.  
  48.  
  49. >Thanks in advance.
  50. >  -----------------------------------------------------------------
  51. >  Mark Davis-Craig, Merit/MichNet Technical Support Consultant
  52. >  mad@merit.edu        mad@merit.bitnet        (313)-936-2110
  53.  
  54.  
  55. Tim Berners-Lee                       timbl@info.cern.ch
  56. World Wide Web project                (NeXTMail is ok)    
  57. CERN                                  Tel: +41(22)767 3755
  58. 1211 Geneva 23, Switzerland           Fax: +41(22)767 7155
  59.  
  60. _________________________________ protocol notes follow ___________
  61.  
  62.  
  63.                                          The HTTP Protocol As Implemented In W3
  64.  
  65.  
  66.                           HTTP AS IMPLEMENTED IN WWW
  67.                                        
  68.  
  69.    This document defines the Hypertext Transfer protocol  (HTTP) as currently
  70.    implemented by the WorldWideWeb initaitive software. This is a subset of the
  71.    proposed full HTTP protocol.  No client profile information is transferred
  72.    with the query. Future HTTP protocols will be back-compatible with this
  73.    protocol.
  74.    
  75.  
  76.     The protocol  uses the normal internet-style telnet protocol style on a
  77.    TCP-IP link. The following describes how a client acquires a (hypertext)
  78.    document from an HTTP server, given an HTTP document address .
  79.    
  80.  
  81. Connection
  82.  
  83.    The client makes a TCP-IP connection to the host using the domain name or IP
  84.    number , and the port number  given in the address.
  85.    
  86.  
  87.     During development, the default HTTP TCP port number is 2784 -- this will
  88.    change when an official port number is allocated.
  89.    
  90.  
  91.     The server accepts the connection.
  92.    
  93.  
  94.     Note: HTTP currently runs over TCP, but could run over any
  95.    connection-oriented service.   The interpretation of the protocol below in
  96.    the case of a sequenced packet service (such as DECnet(TM) or ISO TP4) is
  97.    that that the request should be one TPDU, but the repose may be many.
  98.    
  99.  
  100. Request
  101.  
  102.    The client sends a document request consisting of a line of ASCII characters
  103.    terminated by a CR LF (carriage return, line feed) pair. A well-behaved
  104.    server will not require the carriage return character.
  105.    
  106.  
  107.     This request consists of the word "GET", a space, the document address ,
  108.    omitting the "http:, host and port parts when they are the coordinates just
  109.    used to make the connection. (If a gateway is being used, then a full
  110.    document address may be given specifying a different naming scheme).
  111.    
  112.  
  113.     The search functionality of the protocol lies in the ability of the
  114.    addressing syntax to describe a search on a named index .
  115.    
  116.  
  117.     A search should only be requested by a client when the index document
  118.    itself has been descibed as an index using the  ISINDEX tag .
  119.    
  120.  
  121. Response
  122.  
  123.    The response to a simple GET request is a message in hypertext mark-up
  124.    language ( HTML ). This is a byte stream of ASCII characters.
  125.    
  126.  
  127.     Lines shall be delimited by an optional carriage return followed by a
  128.    mandatory line feed chararcter. The client should not assume that the
  129.    carriage return will be present.  Lines may be of any length. Well-behaved
  130.    servers should retrict line length to 80 characters excluding the CR LF
  131.    pair.
  132.    
  133.  
  134.     The format of the message is HTML - that is, a trimmed SGML document. Note
  135.    that this format allows for menus and hit lists to be returned as hypertext.
  136.    It also allows for plain ASCII text to be returned following the  PLAINTEXT
  137.    tag .
  138.    
  139.  
  140.     The message is terminated by  the closing of the connection by the server.
  141.    
  142.  
  143.     Well-behaved clients will read the entire document as fast as possible. The
  144.    client shall not wait for user action (output paging for example) before
  145.    reading the whole of the document.  The server may impose a timeout of the
  146.    order of 15 seconds on inactivity.
  147.    
  148.  
  149.     Error responses are supplied in human readable text in HTML syntax. There
  150.    is no way to distinguish an error response from a satisfactory response
  151.    except for the content of the text.
  152.    
  153.  
  154. Disconnection
  155.  
  156.    The TCP-IP connection is broken by the server when the whole document has
  157.    been transferred.
  158.    
  159.  
  160.     The client may abort the transfer by breaking the connection before this,
  161.    in which case the server will not record any error condidtion.
  162.    
  163.  
  164.     Requests are idempotent .  The server need not store any information about
  165.    the request after disconnection.
  166.    
  167.  
  168.     _________________________________________________________________
  169.    
  170.  
  171.                                                                          Tim BL
  172.                                                                                
  173.  
  174.                                W3 NAMING SCHEMES
  175.                                        
  176.  
  177.    (See also: a discussion of design issues involved , BNF syntax , W3
  178.    background)
  179.    
  180.  
  181.     The format of a hypertext name consists of the name of the naming
  182.    sub-scheme to be used, then a name in a format particular to that subscheme,
  183.    then an optional anchor identifier within the document. For example, the
  184.    format is for all internet-based access methods:
  185.    
  186.  
  187.       scheme : // host.domain:port / path / path  # anchor
  188.    
  189.  
  190.     A suffix # anchor id allows one to refer to a particular anchor within a
  191.    document.
  192.    
  193.  
  194.     A suffix ? followed by words separated by + signs  allows one to seach an
  195.    index (see details ).
  196.    
  197.  
  198.     References from one document to another with a similar name may be
  199.    abbreviated to a relative name . This imposes certain restrictions on the
  200.    way that the "path" is represented.
  201.    
  202.  
  203.     A special format is used to represent a search on an index . See also: the
  204.    full BNF description , about escaping illegal characters .
  205.    
  206.  
  207. Examples
  208.  
  209.  
  210.          file://cernvax.cern.ch/usr/lib/WWW/defaut.html#123
  211.  
  212.    This is a fully qualified file name, referring to a document in the file
  213.    name space of the given internet node, and an imaginary anchor 123 within
  214.    it.
  215.    
  216.  
  217.  
  218.          #greg
  219.  
  220.    This refers to anchor "greg" in the same document as that in which the name
  221.    appears.
  222.    
  223.  
  224. Naming sub-schemes
  225.  
  226.    Different schemes usually use different protocols on the network. The format
  227.    of the address after the scheme name is a function of the particular scheme.
  228.    In practice, all internet-based schemes have a common format for the node
  229.    name and port.   Schemes currently defined are as follows, with links to
  230.    more details.
  231.    
  232.  
  233.   file                    Access is provided to files, using whatever means the
  234.                          browser and/or gateways have to reach files on obscure
  235.                          machines.
  236.                          
  237.  
  238.   news                    Access is provided to news articles, and newsgroups,
  239.                          normally using the NNTP protocol.
  240.                          
  241.  
  242.   http                    Access is provided to any other information using the
  243.                          HTTP search and retrieve protocol . The internal
  244.                          addressing of the information system is mapped onto a
  245.                          W3 path.
  246.                          
  247.  
  248.   telnet                  Access is provided by an interactive telnet session.
  249.                          This is provided ONLY as an interface to other
  250.                          existing online systems which cannot or have not been
  251.                          mapped onto the W3 space.
  252.                          
  253.  
  254.   gopher                  Access is provided using the "gopher" protocol. The
  255.                          gopher protocol is similar to HTTP but uses separate
  256.                          concepts of menus and text files rather than
  257.                          hypertext.
  258.                          
  259.  
  260.    Other schemes we foresee are wais and x500.  Systems (such as WAIS) which
  261.    are not currently accessed directly be W3 servers may be accessed though
  262.    gateways, in which case the document address is encoded within the http
  263.    address of the document in the gateway.  Browsers which do not have the
  264.    ability to use certain protocols may (in principle) be configured to
  265.    automaticaly use certain gateways for certain addressing schemes.
  266.    
  267.  
  268.     This will allow, for example, simple PC-based clients to follow links
  269.    through X500 name servers.
  270.    
  271.  
  272.                                 RELATIVE NAMING
  273.                                        
  274.  
  275.    The address of a hypertext document is normally given within the context of
  276.    another hypertext document. Where the addresses of the two documents are the
  277.    similar, this allows only the difference between the two names to be given,
  278.    saving space. An example is the address of the destination of a hypertext
  279.    link , which is specified relative to the source document address.
  280.    
  281.  
  282.     (A futher practical advantage is that a group of documents may be
  283.    transmitted without internal changes, or accessed using more than one
  284.    address.)
  285.    
  286.  
  287.     In the WWW address format , the rules for relative naming are:
  288.    
  289.  
  290.        If the "scheme" parts  are different, the whole absolute address must be
  291.           given. Other wise, the scheme is omitted, and:
  292.           
  293.  
  294.        If the "host" and/or "port" parts are the different, the host name and
  295.           all the rest of the address must be given. The host name may be given
  296.           using internet hostname conventions, ie domains may be omitted where
  297.           different. This is not very well defined:  one tends to assume that
  298.           if any dot is present, then the full domain name is being given, up
  299.           to the root (.) domain, while if there are no dots, the domain is the
  300.           same as that of the hostname part of the the base address.
  301.           
  302.  
  303.        If the access and host parts are the same, then the path may be given
  304.           with the unix convention, including the use of  ".." to mean indicate
  305.           deletion of a path element. Within the path:
  306.           
  307.  
  308.        If a leading slash is present, the path is absolute. Otherwise:
  309.           
  310.  
  311.        The last part of the path of the base address (e.g. the filename of the
  312.           current document) is removed, and the given relative address appended
  313.           in its place.
  314.           
  315.  
  316.        Within the result,  all occurences "xxx/.."  are recursively removed,
  317.           where xxx is one path element (directory).
  318.           
  319.  
  320.    The use of the slash "/" and double dot ".." in this case must be respected
  321.    by all servers. If necessary, this may mean converting their local
  322.    representations in order that these characters should not appear within path
  323.    elements (see "escaping").
  324.    
  325.  
  326.                           ADDRESS FOR AN INDEX SEARCH
  327.                                        
  328.  
  329.    If a given hypertext node is an index, or the server has an index associated
  330.    with it, then a search may be done on that index by suffixing the name of
  331.    the index with a list of keywords, after a question mark:
  332.    
  333.  
  334.  
  335.         address_of_index ? keywordlist
  336.  
  337.    The address of the index is a normal hypertext address. In the keuwordlist,
  338.    multiple keywords are separated by plus signs (+) .  (See BNF syntax
  339.    description .)  The resulting string still does not contain any spaces. It
  340.    may be considered to be the hypertext address of a document which is the
  341.    result of making the keyword search on the index. Normally, if the search
  342.    was successful, the document returned will contain anchors leading to other
  343.    documents which match the selection criteria.
  344.    
  345.  
  346.     The search method, and the logical and lexical functions, weights, etc
  347.    applied to the keywords will depend on the index address.  One actual index
  348.    may have several hypertext addresses,  which when searched on will behave in
  349.    different ways. For example, one may allow a search on author-given keywords
  350.    only, while another may be a full text search.  These things particular to
  351.    an index should be descibed in the hypertext page for the index node itself
  352.    (or in linked documents). For example, a server may allow specific boolean
  353.    search combinations may be represented by the words "and", "or" and "not".
  354.    
  355.  
  356. Example:
  357.  
  358.  
  359.                 http://cernvm/FIND/?sgml+cms
  360.  
  361.    indicates the result of perfoming a search for keywords "sgml" and "cms" on
  362.    the index http://cernvm/FIND/.
  363.    
  364.  
  365.                                 HTTP ADDRESSING
  366.                                        
  367.  
  368.    With an access code of http:,  a protocol introduced for  the WWW initiative
  369.    is used to acquire data from a server. This is the "Hypertext Transfer
  370.    protocol", HTTP , a simple search and retrieve (S and R) protocol.
  371.    
  372.  
  373.     The syntax of an http address is, with [] indicating optional parts (see
  374.    BNF description ),
  375.    
  376.  
  377.  
  378.         http : // hostname [ : port ] / path [ ? searchwords ]
  379.  
  380.    for example, the following are valid addresses:
  381.    
  382.  
  383.  
  384.         http://info.cern.ch/hypertext/WWW/TheProject.html
  385.  
  386.         http://crnvmc.cern.ch/FIND?sgml+examples
  387.  
  388.    HTTP addresses conform to the WWW conventions,  including the possibility of
  389.    using the search format . The significance of the items in the path part of
  390.    the document name is completely up to the server. Different paths may be
  391.    used to select different databases, different views of the same database,
  392.    etc.
  393.    
  394.  
  395.   hostname                This is the name of the server in internet form. A
  396.                          numeric form (e.g. 128.141.201.74) may be used, by the
  397.                          domain name form (e.g. info.cern.ch) is preferred. The
  398.                          hostname is mandatory.
  399.                          
  400.  
  401.   port                    This is a numeric port number. If a non-numeric
  402.                          string is used, it must be a defined service name.
  403.                          Note that as there is no central repository for
  404.                          service names (they are defined locaaly for each
  405.                          host), a service name is NOT an appropriate way to
  406.                          specify a port number for a hypertext address. If the
  407.                          port number is omitted the preceding colon must also
  408.                          be omitted. In this case, port number 2784 is assumed
  409.                          [This may change!].
  410.                          
  411.  
  412.   See also: WWW addressing in general , HTTP protocol .
  413.                          
  414.  
  415.    _________________________________________________________________
  416.    
  417.  
  418.                                                                          Tim BL
  419.                                                                                
  420.  
  421.                              W3 ADDRESSES OF FILES
  422.                                        
  423.  
  424.    The format of a hypertext reference to a file is an extension of the unix
  425.    naming system. The full explicit format is:
  426.    
  427.  
  428.        file :  //  node /  directories /  name
  429.    
  430.  
  431.     The actual protocols used by the client depend on the implementation of the
  432.    browser and the environment. Typically, the browser will check to see
  433.    whether the node is the local node,  or a node for which files are available
  434.    mounted in some form of distributed file system.  If neither of these are
  435.    the case, then the browser may try rpc, anonymous FTP or other protocols.
  436.    
  437.  
  438. Examples
  439.  
  440.  
  441.          file://cernvax.cern.ch/usr/lib/WWW/defaut.html
  442.  
  443.    This is a fully qualified file name.
  444.    
  445.  
  446.  
  447.          fred.html
  448.  
  449.    This relative name , used within a file, will refer to a file of the same
  450.    node and directory as that file, but the name fred.html.
  451.    
  452.  
  453. Improvements : Directory access
  454.  
  455.    The final file name should be optional. If the address ends with a '/', the
  456.    browser should retrieve the contents of the specified directory and generate
  457.    a page of virtual hypertext pointing to its contents. In addition, it could
  458.    display an information file contained in that directory, if any is present.
  459.    Suggested file names to search for in order : README.html, *README*.html,
  460.    README, *README*, *readme*.
  461.    
  462.  
  463.    
  464.  
  465.    
  466.  
  467.                         HYPERTEXT ADDRESS FOR NET NEWS
  468.                                        
  469.  
  470.    The format of a hypertext reference to information in the internet/usenet
  471.    news system can take any of the following forms:
  472.    
  473.  
  474.   news: newsgroup         This refers to a list of articles currently available
  475.                          in the given newsgroup. The newsgroup is a series of
  476.                          alphanumeric characters and dots.
  477.                          
  478.  
  479.   news:*                  This refers to a list of valid newsgroups.
  480.                          
  481.  
  482.   news: message_id        This refers to a given article explicitly. The
  483.                          message_id is optionally surrounded by angle brackets,
  484.                          and must contain an @ sign.
  485.                          
  486.  
  487.   
  488.  
  489.                          
  490.  
  491.    Possible extensions to this are more generous wildcarding for the list of
  492.    newsgroups. It takes too long to load the whole list, and it would be more
  493.    useful to be able to browse through a set of newsgroups.
  494.    
  495.  
  496.     There is no way of referring to "unread" articles. Keeping track of this is
  497.    the job of the browser.
  498.    
  499.  
  500. Examples
  501.  
  502.  
  503.          news:<12345678@cernvax.cern.ch>
  504.  
  505.          news:12345678@cernvax.cern.ch
  506.  
  507.    These addresses both refer to the same (imaginary!) article by its unique
  508.    message-id.
  509.    
  510.  
  511.  
  512.  
  513. news:comp.sys.next.announce
  514.  
  515.    This refers to a list of articles in the newsgroup comp.sys.next.announce.
  516.    The list is, of course, a list of references to article by message-id.
  517.    
  518.  
  519.                                TELNET ADDRESSING
  520.                                        
  521.  
  522.    A telnet address is a spcecial case of a W3 address.
  523.    
  524.  
  525.     When a telnet address is used, information can only be rertrieved using an
  526.    interactive telnet session. This has the disadvantage that information
  527.    cannot be indexed, searched, etc automatically, nor can it be gatewayed into
  528.    other systems.  The telnet addressing form is used to allow a pointer to
  529.    information systems such as library information systems which have not been
  530.    gatewayed into the web properly yet.
  531.    
  532.  
  533.     The syntax is, with [] indicating optional parts (see full BNF)
  534.    
  535.  
  536.  
  537.         telnet : / /  [ user @ ] host  [ : port ]
  538.  
  539.    There should be no spaces. For example, the following are valid telnet
  540.    addresses:
  541.    
  542.  
  543.  
  544.         telnet://www@info.cern.ch:23
  545.  
  546.         telnet://www@info.cern.ch
  547.  
  548.         telnet://info.cern.ch
  549.  
  550.   user                   is the optional name of the user to be used for login.
  551.                          If the username  is omitted, then so must be the "@"
  552.                          sign. This is equivalent to the argument used with the
  553.                          -l option on the ucb telnet command. When the username
  554.                          is omitted, some access servers will prompt for a
  555.                          username and password.
  556.                          
  557.  
  558.   host                   This is the name of the server in internet form. A
  559.                          numeric form (e.g. 128.141.201.74) may be used, by the
  560.                          domain name form (e.g.  info.cern.ch) is preferred.
  561.                          The host is mandatory.
  562.                          
  563.  
  564.   port                   This is a numeric port number. If a non-numeric string
  565.                          is used, it must be a defined service name. Note that
  566.                          as there is no central repository for service names
  567.                          (they are defined locaaly for each host),  a service
  568.                          name is NOT an appropriate way to specify a port
  569.                          number for a hypertext address. If the port number is
  570.                          omitted the preceding colon must also be omitted. In
  571.                          this case, port number 23 is assumed.
  572.                          
  573.  
  574.    _________________________________________________________________
  575.    
  576.  
  577.                                                                          Tim BL
  578.                                                                                
  579.  
  580.                                GOPHER ADDRESSING
  581.                                        
  582.  
  583.    Gopher addresses indicate that the gopher protocol should be used to access
  584.    the information.  The Gopher protocol is a simple internet protocol similar
  585.    to HTTP . It allows the transfer of menus or plain text files.  (HTTP
  586.    expresses both menus and plain text files as special cases of hypertext
  587.    files). See the gopher protocol notes .
  588.    
  589.  
  590.     The syntax is, with [] indicating optional parts (see BNF )
  591.    
  592.  
  593.  
  594.         gopher:// hostname [: port ] [/gtype/ [selector] ] [ ? search ]
  595.  
  596.    There should be no spaces. For example, the following are valid addresses:
  597.    
  598.  
  599.  
  600.         gopher://gopher.micro.umn.edu:70
  601.  
  602.         gopher://gopher.micro.umn.edu:70/1/
  603.  
  604.         gopher://gopher.micro.umn.edu:70
  605.  
  606.    The W3 address for a gopher item may be derived from the fields of a gopher
  607.    menu line which has the format
  608.    
  609.  
  610.   host                    This is the name of the server in internet form. A
  611.                          numeric form (e.g. 128.141.201.74) may be used, by the
  612.                          domain name form (e.g. info.cern.ch) is preferred. The
  613.                          hostname is mandatory.
  614.                          
  615.  
  616.   port                    This is a numeric port number. If a non-numeric
  617.                          string is used, it must be a defined service name.
  618.                          Note that as there is no central repository for
  619.                          service names (they are defined locaaly for each
  620.                          host), a service name is NOT an appropriate way to
  621.                          specify a port number for a hypertext address. If the
  622.                          port number is omitted the preceding colon must also
  623.                          be omitted. In this case, port number 70 is assumed.
  624.                          
  625.  
  626.   gtype                   This is a gopher item type number, a (hopefully
  627.                          printable!) ASCII character.  Currently these types
  628.                          are all ASCII decimal digit characters. Character "0"
  629.                          (hex 30)  signifies a plain text file. Character "1"
  630.                          signifies a Menu.  Character "7" signifies a
  631.                          searchable index.  Character "8" should not be used in
  632.                          a W3 address: use telnet addressing instead.  In
  633.                          general W3 terms, the type is the first part of the
  634.                          path. The rest of the path is the gopher selector
  635.                          string. The type field is a hint to the client as to
  636.                          how to represent the anchor, and how to follow it.
  637.                          
  638.  
  639.   selector                This is the string to be sent to the gopher server to
  640.                          identify the information required.
  641.                          
  642.  
  643.    _________________________________________________________________
  644.    
  645.  
  646.                                                                          Tim BL
  647.                                                                                
  648.  
  649.                           ESCAPING ILLEGAL CHARACTERS
  650.                                        
  651.  
  652.    The W3 address syntax allows a path to contain most printable ASCII
  653.    characters, but some are inevitably used for punctuation are excluded. W3
  654.    addresses are sometimes used to represent addresses in some other space.
  655.    This happens when an HTTP server, for example, uses file names as its
  656.    document names, or when addresses from some other protocol (Gopher, WAIS,
  657.    etc) are mapped into the W3 web.
  658.    
  659.  
  660.     In these cases, a convention is normally used to map illegal characters in
  661.    these "foreign" names onto the allowed set.
  662.    
  663.  
  664.     In the case of an HTTP server,  any mapping may be used.
  665.    
  666.  
  667.     A suitable convention is that a percent sign (%) followed by two
  668.    hexadecimal digits (0-9 or a-f)  stands for the single character with ASCII
  669.    hexadecimal code represented by those two digits (Most significant digit
  670.    first).
  671.    
  672.  
  673.     A percent sign itself must therefore be represented by %25, as 25 hex is
  674.    the ASCII code for "%".
  675.    
  676.  
  677.     _________________________________________________________________
  678.    
  679.  
  680.                                                                          Tim BL
  681.                                                                                
  682.  
  683.                             W3 ADDRESS SYNTAX: BNF
  684.                                        
  685.  
  686.    This is a BNF-like description of the W3 addressing syntax . We use a
  687.    vertical line "|" to indicate alternatives, and [brackets] to indicate
  688.    optional parts.   Spaces are representational only: no spaces are actually
  689.    allowed within a W3 address. Single letters stand for single letters. All
  690.    words of more than one letter below are entites described elsewhere in the
  691.    syntax description.  (Entity names are here linked to their definitions,
  692.    probably making this unreadable with the line mode browser.)
  693.    
  694.  
  695.     An absolute address specified in a link is an anchoraddress . The address
  696.    which is passed to a server is a docaddress .
  697.    
  698.  
  699.   anchoraddress           docaddress [ # anchor ]
  700.                          
  701.  
  702.   docaddress              httpaddress | fileaddress | newsaddress |
  703.                          telnetaddress | gopheraddress
  704.                          
  705.  
  706.   httpaddress             h t t p :   / / hostport  [  / path ] [ ? search ]
  707.                          
  708.  
  709.   fileaddress             f i l e : / / host / path
  710.                          
  711.  
  712.   newsaddress            n e w s : groupart
  713.                          
  714.  
  715.   groupart               * | group | article
  716.                          
  717.  
  718.   group                  ialpha [ . group ]
  719.                          
  720.  
  721.   article                xalphas @ host
  722.                          
  723.  
  724.   telnetaddress           t e l n e t : / / [ user @ ] hostport
  725.                          
  726.  
  727.   gopheraddress           g o p h e r : / / hostport  [/ gtype  [ / selector ]
  728.                          ] [ ? search ]
  729.                          
  730.  
  731.   hostport                host [ : port ]
  732.                          
  733.  
  734.   host                    hostname | hostnumber
  735.                          
  736.  
  737.   hostname                ialpha [  .  hostname ]
  738.                          
  739.  
  740.   hostnumber              digits . digits . digits . digits
  741.                          
  742.  
  743.   port                    digits
  744.                          
  745.  
  746.   selector                path
  747.                          
  748.  
  749.   path                    void |  xalphas  [  / path ]
  750.                          
  751.  
  752.   search                  xalphas [ + search ]
  753.                          
  754.  
  755.   user                    xalphas
  756.                          
  757.  
  758.   anchor                  xalphas
  759.                          
  760.  
  761.   gtype                   xalpha
  762.                          
  763.  
  764.   xalpha                  alpha | $ | _ | @ | ! | % | ^ | | * |  (  |  ) | . |
  765.                          digit
  766.                          
  767.  
  768.   xalphas                 xalpha [ xalphas ]
  769.                          
  770.  
  771.   ialpha                 alpha [ xalphas ]
  772.                          
  773.  
  774.   alpha                   a | b | c | d | e | f | g | h | i | j | k | l | m | n
  775.                          | o | p | q | r | s | t | u | v | w | x | y | z | A |
  776.                          B | C | D | E | F | G | H | I | J | K | L | M | N  | O
  777.                          | P | Q | R | S | T | U | V | W | X | Y | Z
  778.                          
  779.  
  780.   digit                   0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  781.                          
  782.  
  783.   digits                  digit [ digits ]
  784.                          
  785.  
  786.   alphanum                alpha | digit
  787.                          
  788.  
  789.   alphanums               alphanum [ alphanums ]
  790.                          
  791.  
  792.   void
  793.                          
  794.  
  795.   See also: General description of this syntax, Escaping conventions.
  796.                          
  797.  
  798.    _________________________________________________________________
  799.    
  800.  
  801.                                                                          Tim BL
  802.                                                                                
  803.  
  804.                                      HTML
  805.                                        
  806.  
  807.    The WWW system uses marked-up text to represent a hypertext document for
  808.    transmision over the network. The hypertext mark-up language is an SGML
  809.    format. This defines the basic syntax used. The particular language, the set
  810.    of tags and the rules about their use, and their significance is not part of
  811.    the SGML standard. There being no standard on this, we have adopted a set
  812.    which seems sensible. We call them HTML -- hypertext markup language. HTML
  813.    is not an alternative to SGML, it is a particular format within the SGML
  814.    rules (an SGML "DTD"). HTML parsers should ignore tags which they do not
  815.    understand, and ignore attributes which they do not understand of tags which
  816.    they do understand.
  817.    
  818.  
  819.     See also:
  820.    
  821.  
  822.   The tags                A list of the tags used in HTML with their
  823.                          significance.
  824.                          
  825.  
  826.   Example                 A file containing a variety of tags used for test
  827.                          purposes.
  828.                          
  829.  
  830. Default text
  831.  
  832.    Unless otherwise defined by tags, text is transmitted as a stream of lines.
  833.    The division of the stream of characters into lines is arbitrary, and only
  834.    made in order to allow the text to be passed through systems which can only
  835.    handle text with a limited line length. The recommended line length for
  836.    transmission is 80 characters. The division into lines has no significance
  837.    (except in the case of  example sections and PLAINTEXT ) apart from
  838.    indicating a word end. Line breaks between tags have no significance.
  839.    
  840.  
  841.                                    HTML TAGS
  842.                                        
  843.  
  844.    This is a list of tags used in the HTML language.  Each tag starts with a
  845.    tag opener (a less than sign) and ends with a tag closer (a greater than
  846.    sign).   Many tags have corresponding closing tags which identical except
  847.    for a slash after the tag opener. (For example, the TITLE tag).
  848.    
  849.  
  850.     Some tags take parameters, called attributes. The attributes are given
  851.    after the tag, separated by spaces. Certain attributes have an effect simply
  852.    by their presence, others are followed by an equals sign and a value. (See
  853.    the Anchor tag, for example). The names of tags and attributes are not case
  854.    sensitive: they may be in lower, upper, or mixed case with exactly the same
  855.    meaning.  (In this document they are generally represented in upper case.)
  856.    
  857.  
  858.     Currently HTML documents are transmitted without the normal SGML framing
  859.    tags, but if these are included parsers will ignore them.
  860.    
  861.  
  862. Title
  863.  
  864.    The title of a document is given between title tags:
  865.    
  866.  
  867.  
  868.         <TITLE> ... </TITLE>
  869.  
  870.    The text between the opening and the closing tags is a title for the
  871.    hypertext node. There should only be one title in any node. It should
  872.    identify the content of the node in a fairly wide context, and should
  873.    ideally fit on one line.
  874.    
  875.  
  876.     The title is not strictly part of the text of the document, but is an
  877.    attribute of the node. It may not contain anchors, paragraph marks, or
  878.    highlighting. the title may be used to identify the node in a history list,
  879.    to label the window displaying the node, etc. It is not normally displayed
  880.    in the text of a document itself. Contrast titles with headings .
  881.    
  882.  
  883. Next ID
  884.  
  885.    This tag takes a  single attribute which is the number of the next
  886.    document-wide numeric identifier to be allocated (not good SGML). Note that
  887.    when modifying a document,  old anchor ids should not be reused, as there
  888.    may be references stored elsewhere which point to them.  This is read and
  889.    generated by hypertext editors. Human writers of HTML usually use mnemonic
  890.    alpha identifiers.  Browser software may ignore this tag. Example of use:
  891.    
  892.  
  893.  
  894.         <NEXTID 27>
  895.  
  896. Base Address
  897.  
  898.    Anchors specify addresses of other documents, in a from relative to the
  899.    address of the current document. Normally, the address of a document is
  900.    known to the browser because it was used to access the document. However, is
  901.    a document is mailed, or is somehow visible with more than one address (for
  902.    example, via its filename and also via its library name server catalogue
  903.    number), then the browser needs to know the base address in order to
  904.    correctly deduce external document addresses.
  905.    
  906.  
  907.     The format of this tag is not yet specified.
  908.    
  909.  
  910. Anchors
  911.  
  912.    The format of an anchor is as follows:
  913.    
  914.  
  915.  
  916.         <A NAME=xxx HREF=XXX> ... </A>
  917.  
  918.    The text between the opening tag and the closing tag is either the start or
  919.    destination (or both) of a link. Attributes of the anchor tag are as
  920.    follows.
  921.    
  922.  
  923.   HREF                    If the HREF attribute is present, the anchor is
  924.                          senstive text: the start of a link. If the reader
  925.                          selects this text,  he should be presented with
  926.                          another document whose network address is defined by
  927.                          the value of the HREF attribute . The format of the
  928.                          network address is specified elsewhere . This allows
  929.                          for the form HREF=#identifier to refer to another
  930.                          anchor in the same document. If the anchor is in
  931.                          another document, the atribute is a relative name ,
  932.                          relative to the documents address (or specified base
  933.                          address if any).
  934.                          
  935.  
  936.   NAME                    The attribute NAME allows the anchor to be the
  937.                          destination of a link. The value of the parameter is
  938.                          that part of a hypertext address which follows the
  939.                          hash sign.
  940.                          
  941.  
  942.   TYPE                    An attribute TYPE may give the relationship described
  943.                          by the hyertext link. The type is expressed by a
  944.                          string for extensibility.  Strings for types with
  945.                          particular semantics will be registered by the W3
  946.                          team. The default relationship if none other is given
  947.                          is void.
  948.                          
  949.  
  950.    All attributes are optional, although one of NAME and HREF is necessary for
  951.    the anchor to be useful.
  952.    
  953.  
  954. IsIndex
  955.  
  956.    This tag informs the reader that the document is an index document. As well
  957.    as reading it, the reader may use a keyword search.
  958.    
  959.  
  960.     Format:
  961.    
  962.  
  963.  
  964.         <ISINDEX>
  965.  
  966.    The node may be queried with a keyword search by suffixing the node address
  967.    with a question mark, followed by a list of keywords separated by plus
  968.    signs. See the network address format.
  969.    
  970.  
  971. Plaintext
  972.  
  973.    This tag indicates that all following text is to be taken litterally, up to
  974.    the end of the file.  Plain text is designed to be represented in the same
  975.    way as example XMP text, with fixed width character and significant line
  976.    breaks. Format:
  977.    
  978.  
  979.  
  980.                 <PLAINTEXT>
  981.  
  982.    This tag allows the rest of a file to be read efficiently without parsing.
  983.    Its presence is an optimisation. There is no closing tag.
  984.    
  985.  
  986. Example sections
  987.  
  988.    These styles allow text of fixed-width characters to be embedded absolutely
  989.    as is into the document. The format is:
  990.    
  991.  
  992.  
  993.         <LISTING>
  994.  
  995.                 ...
  996.  
  997.         </LISTING>
  998.  
  999.    The text between these tags is to be portrayed in a fixed width font, so
  1000.    that any formatting done by character spacing on successive lines will be
  1001.    maintained. Between the opening and closing tags:
  1002.    
  1003.  
  1004.        The text may contain any ISO Latin printable characters, including the
  1005.           tag opener, so long as it does not contain the closing tag in full.
  1006.           
  1007.  
  1008.        Line boundaries are significant, and are to be interpreted as a move to
  1009.           the start of a new line.
  1010.           
  1011.  
  1012.        The ASCII Horizontal Tab (HT) character should be interpreted as the
  1013.           smallest positive nonzero number of spaces which will leave the
  1014.           number of characters so far on the line as a multiple of 8. Its use
  1015.           is not recommended however.
  1016.           
  1017.  
  1018.    The LISTING tag is portrayed so that at least 132 characters will fit on a
  1019.    line.  The XMP tag is portrayed in a font so that at least 80 characters
  1020.    will fit on a line but is otherwise identical to LISTING. The examples of
  1021.    markup are here given using the XMP tag.
  1022.    
  1023.  
  1024. Paragraph
  1025.  
  1026.    This tag indicates a new paragraph. The exact representation of this
  1027.    (indentation,  leading, etc) is not defined here, and may be a function of
  1028.    other tags, style sheets etc. The format is simply
  1029.    
  1030.  
  1031.  
  1032.         <P>
  1033.  
  1034.    (In SGML terms, paragraph elements are transmitted in minimised form).
  1035.    
  1036.  
  1037. Headings
  1038.  
  1039.    Several levels (at least six) of heading are supported. Note that a
  1040.    hypertext document tends to need less levels of  heading than a normal
  1041.    document whose only structure is given by the nesting of headings. H1 is the
  1042.    highest level of heading, and is recommened for the start of a hypertext
  1043.    node.   It is suggested that the first heading be one suitable for a reader
  1044.    who is already browsing in related information, in contrast to the title tag
  1045.    which should identify the node in a wider context.
  1046.    
  1047.  
  1048.  
  1049.         <H1>, <H2>, <H3>, <H4>, <H5>, <H6>
  1050.  
  1051.    These tags are kept as defined in the CERN SGML guide. Their definition is
  1052.    completely historical, deriving from the AAP tag set.  A difference is that
  1053.    HTML documents allow headings to be terminated by  closing tags:
  1054.    
  1055.  
  1056.  
  1057.         <H2>Second level heading</h2>
  1058.  
  1059. Highlighting
  1060.  
  1061.    The highlighted phrase tags may occur in normal text, and may be nested. For
  1062.    each opening tag there must follow a corresponding closing tag. NOT
  1063.    CURRENTLY USED.
  1064.    
  1065.  
  1066.  
  1067.  
  1068.         <HP1>...</HP1>   <HP2>... </HP2> etc.
  1069.  
  1070. Glossaries
  1071.  
  1072.  
  1073.    A glosary (or definition list) is a list of paragraphs each of which has a
  1074.    short title alongside it.  Apart from glossaries, this format is useful for
  1075.    presenting a set of named elements to the reader. The format is as follows:
  1076.    
  1077.  
  1078.  
  1079.  
  1080.         <DL>
  1081.  
  1082.         <DT>Term<DD>definition pagagraph
  1083.  
  1084.         <DT>Term2<DD>Definition of term2
  1085.  
  1086.         </DL>
  1087.  
  1088. Lists
  1089.  
  1090.  
  1091.    A list is a sequence of paragraphs, each of which is preceded by a special
  1092.    mark or sequence number. The format is:
  1093.    
  1094.  
  1095.  
  1096.  
  1097.         <UL>
  1098.  
  1099.         <LI> list element
  1100.  
  1101.         <LI> another list element ...
  1102.  
  1103.         </LI>
  1104.  
  1105.    The opening list tag (UL for an unordered list, OL for an ordered one) must
  1106.    be immediately followed by the first list element. The representation of the
  1107.    list is not defined here, but a bulleted list for unordered lists,  and a
  1108.    sequence of numbered paraghraphs for an ordered list would be quite
  1109.    appropriate.
  1110.    
  1111.  
  1112.     "OL" IS NOT CURRENTLY USED
  1113. 
  1114.